﻿Imports Oracle.DataAccess.Client
Public Class cImprimeFac
    Private lDsImpfac As dsImprimeFac
    Private Sub CalculaTotales()
        If lDsImpfac.ENCAFACIMPRIME.Rows.Count > 0 Then
            Dim drEnc As dsImprimeFac.ENCAFACIMPRIMERow = lDsImpfac.ENCAFACIMPRIME.Rows(0)
            Dim iIva As cTipoIva
            For Each drDet As dsImprimeFac.DETFACIMPRIMERow In lDsImpfac.DETFACIMPRIME.Rows
                iIva = New cTipoIva(drDet.IDIVA)
                If iIva.PorIva <> 0 Then
                    drEnc("VRGRAVADO") += cGeneral.NZ(drDet("VALORBASE")) * (drDet.DESCUENTO1 - 1) * (drDet.DESCUENTO2 - 1) * drDet.CANTIDAD
                    drEnc("IVA") += cGeneral.NZ(drDet("VALORIVA")) * (drDet.DESCUENTO1 - 1) * (drDet.DESCUENTO2 - 1) * drDet.CANTIDAD
                Else
                    drEnc("VRNOGRAVADO") += cGeneral.NZ(drDet("VALORBASE")) * (drDet.DESCUENTO1 - 1) * (drDet.DESCUENTO2 - 1) * drDet.CANTIDAD
                End If
            Next
        End If
    End Sub
    Private Sub CargaDescDetalle(ByVal TipoDoc As String, ByVal Numero As Integer)
        Using conn As OracleConnection = New OracleConnection(My.Settings.ConnectionString)
            Using cmd As OracleCommand = conn.CreateCommand
                cmd.CommandText = "SELECT MOV_DESCRIPCIONDET.IDDOCUMENTO, MOV_DESCRIPCIONDET.NUMERO, MOV_DESCRIPCIONDET.NUMEROLINEA, MOV_DESCRIPCIONDET.IDPRODUCTO, " & _
                                        "MOV_DESCRIPCIONDET.TIPOSUBPROD, MOV_DESCRIPCIONDET.NUMEROREGISTRO, MOV_DESCRIPCIONDET.NUMEROPRODUCTO, GLO_DATOSTABLAS.DESCRIPCION AS DESCRIPCIONSUBPROD " & _
                                  "FROM MOV_DESCRIPCIONDET INNER JOIN GLO_DATOSTABLAS ON MOV_DESCRIPCIONDET.TIPOSUBPROD = GLO_DATOSTABLAS.ID " & _
                                  "WHERE (MOV_DESCRIPCIONDET.IDDOCUMENTO = :PIDDOC) AND (MOV_DESCRIPCIONDET.NUMERO = :PNUMERO) AND (GLO_DATOSTABLAS.IDGRUPO = 'sp') "
                cmd.Parameters.Add("PIDDOC", OracleDbType.Varchar2).Value = TipoDoc
                cmd.Parameters.Add("PNUMERO", OracleDbType.Int32).Value = Numero
                Try
                    conn.Open()
                    lDsImpfac.DESCRIPCIONDETIMPRIME.Load(cmd.ExecuteReader)
                    conn.Close()
                Catch ex As Exception
                    Throw ex
                End Try
            End Using
        End Using
    End Sub
    Private Sub CargaDetalle(ByVal TipoDoc As String, ByVal Numero As Integer)
        Using conn As OracleConnection = New OracleConnection(My.Settings.ConnectionString)
            Using cmd As OracleCommand = conn.CreateCommand
                cmd.CommandText = "SELECT MOV_MOVIMIENTODETALLE.IDDOCUMENTO, MOV_MOVIMIENTODETALLE.NUMERO, MOV_MOVIMIENTODETALLE.NUMEROLINEA, " & _
                                        "MOV_MOVIMIENTODETALLE.IDPRODUCTO, PRO_PRODUCTO.DESCRICION, MOV_MOVIMIENTODETALLE.IDIVA, CON_TIPOIVA.PORIVA,  " & _
                                        "MOV_MOVIMIENTODETALLE.CANTIDAD, MOV_MOVIMIENTODETALLE.DESCUENTO1, MOV_MOVIMIENTODETALLE.DESCUENTO2, " & _
                                        "MOV_MOVIMIENTODETALLE.VALORBASE, MOV_MOVIMIENTODETALLE.VALORIVA, MOV_MOVIMIENTODETALLE.VALORLINEA " & _
                                    "FROM  MOV_MOVIMIENTODETALLE INNER JOIN PRO_PRODUCTO ON MOV_MOVIMIENTODETALLE.IDPRODUCTO = PRO_PRODUCTO.IDPRODUCTO INNER JOIN CON_TIPOIVA ON MOV_MOVIMIENTODETALLE.IDIVA = CON_TIPOIVA.IDTIPOIVA " & _
                                    "WHERE  (MOV_MOVIMIENTODETALLE.IDDOCUMENTO = :PIDDOC) AND (MOV_MOVIMIENTODETALLE.NUMERO = :PNUMERODOC) "
                cmd.Parameters.Add("PIDDOC", OracleDbType.Varchar2).Value = TipoDoc
                cmd.Parameters.Add("PNUMERODOC", OracleDbType.Int32).Value = Numero
                Try
                    conn.Open()
                    lDsImpfac.DETFACIMPRIME.Load(cmd.ExecuteReader)
                    conn.Close()
                Catch ex As Exception
                    Throw ex
                End Try
            End Using
        End Using
    End Sub
    Private Sub CargaEnca(ByVal TipoDoc As String, ByVal Numero As Integer)
        Using conn As OracleConnection = New OracleConnection(My.Settings.ConnectionString)
            Using cmd As OracleCommand = conn.CreateCommand
                cmd.CommandText = "SELECT IDDOCUMENTO, NUMERO, FECHADOCUMENTO, FECHAVENCIMIENTO, IDTERCERO, SUCURSAL, NOMBREESTABLECIMIENTO, NOBRECLIENTE, RAZONSOCIAL, DOCIDENT AS TIPODOCIDEN, DIRECCION, MUNICIPIOS, TELEFONO, IDVENDEDOR, NOMBREVENDEDOR, NOTA, DESCRIPCIONFP AS FPAGO FROM MOV_VENCAMOVIMI WHERE (IDDOCUMENTO = :PIDDOCUMENTO) AND (NUMERO = :PNUMERO) "
                cmd.Parameters.Add("PIDDOCUMENTO", OracleDbType.Varchar2).Value = TipoDoc
                cmd.Parameters.Add("PNUMERO", OracleDbType.Int32).Value = Numero
                Try
                    conn.Open()
                    lDsImpfac.ENCAFACIMPRIME.Load(cmd.ExecuteReader)
                    conn.Close()
                Catch ex As Exception
                    Throw ex
                End Try
            End Using
        End Using
    End Sub
    Public Sub New(ByVal TipoDoc As String, ByVal Numero As Integer)
        Try
            lDsImpfac = New dsImprimeFac
            CargaEnca(TipoDoc, Numero)
            CargaDetalle(TipoDoc, Numero)
            CargaDescDetalle(TipoDoc, Numero)
            CalculaTotales()
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
    Public ReadOnly Property DatosImprimeFac() As dsImprimeFac
        Get
            Return lDsImpfac
        End Get
    End Property
End Class
